Skip to content

fix threads#648

Merged
AlexInLog merged 1 commit into
v2from
fix_threads
Sep 30, 2024
Merged

fix threads#648
AlexInLog merged 1 commit into
v2from
fix_threads

Conversation

@AlexInLog

@AlexInLog AlexInLog commented Sep 30, 2024

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • Tests
    • Added new test cases for various scheduler functionalities, including execution order and delay handling.
    • Refined existing tests for improved clarity and correctness.
    • Enhanced error handling in tests to capture exceptions during scheduling.
    • Expanded checks for thread management and behavior validation of the thread_pool scheduler.
    • Included tests for different delay strategies to verify scheduling behavior.

@coderabbitai

coderabbitai Bot commented Sep 30, 2024

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

The changes in the pull request focus on enhancing the test suite for the ReactivePlusPlus library, particularly in the test_scheduler.cpp file. New test cases have been added to assess various scheduler functionalities, while existing tests have been refined for clarity and correctness. Improvements include better error handling, comprehensive checks for thread management, and expanded testing of delay strategies.

Changes

Files Change Summary
src/tests/rpp/test_scheduler.cpp Added new test cases for different schedulers, refined existing tests, improved error handling, enhanced thread management checks, and expanded delay strategy tests.

Poem

In the burrow deep, where the schedulers play,
New tests hop in, brightening the day.
With threads all a-twirl and delays in a line,
Our library's stronger, oh how it will shine!
So let’s twitch our noses and give a cheer,
For robust tests that bring us good cheer! 🐇✨


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 9c328ba and 16adeb2.

📒 Files selected for processing (1)
  • src/tests/rpp/test_scheduler.cpp (1 hunks)

Comment thread src/tests/rpp/test_scheduler.cpp
@github-actions

Copy link
Copy Markdown
Contributor

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-gcc

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 304.64 ns 2.18 ns 2.21 ns 0.99
Subscribe empty callbacks to empty observable via pipe operator 312.35 ns 2.18 ns 2.17 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 726.34 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 1064.73 ns 3.73 ns 3.73 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2348.23 ns 149.61 ns 150.36 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 751.18 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2227.31 ns 59.60 ns 60.26 ns 0.99
interval - interval + take(3) + subscribe + current_thread 3096.37 ns 32.66 ns 32.64 ns 1.00
from array of 1 - create + as_blocking + subscribe + new_thread 29194.24 ns 30305.31 ns 31211.47 ns 0.97
from array of 1000 - create + as_blocking + subscribe + new_thread 39811.70 ns 52422.35 ns 55313.76 ns 0.95
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 3649.42 ns 217.10 ns 215.55 ns 1.01

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1221.97 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 898.40 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1060.40 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 989.07 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1319.63 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 975.20 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1255.47 ns 18.03 ns 18.18 ns 0.99
immediate_just(1,2,3)+element_at(1)+subscribe 917.34 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 266.59 ns 2.18 ns 2.17 ns 1.00
current_thread scheduler create worker + schedule 368.30 ns 5.59 ns 5.60 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 831.34 ns 58.38 ns 56.32 ns 1.04

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 914.40 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 977.89 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2487.89 ns 209.94 ns 206.81 ns 1.02
immediate_just+buffer(2)+subscribe 1662.28 ns 13.68 ns 13.68 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 2575.01 ns 1586.72 ns 1352.25 ns 1.17

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 927.07 ns - - 0.00
immediate_just+take_while(true)+subscribe 919.11 ns 0.31 ns 0.31 ns 1.01

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 2090.09 ns 0.31 ns 0.31 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 3539.28 ns 255.64 ns 255.07 ns 1.00
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3796.89 ns 202.83 ns 206.79 ns 0.98
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 179.15 ns 181.47 ns 0.99
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3693.43 ns 1212.91 ns 1292.68 ns 0.94
immediate_just(1) + zip(immediate_just(2)) + subscribe 2206.28 ns 202.28 ns 201.38 ns 1.00

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.75 ns 14.78 ns 14.81 ns 1.00
subscribe 100 observers to publish_subject 207038.60 ns 17505.41 ns 17165.52 ns 1.02
100 on_next to 100 observers to publish_subject 32714.81 ns 17266.18 ns 17216.21 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1390.33 ns 13.98 ns 13.99 ns 1.00
basic sample with immediate scheduler 1448.69 ns 5.59 ns 5.59 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 993.17 ns 0.31 ns 0.31 ns 1.00

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 2134.33 ns 911.77 ns 935.28 ns 0.97
create(on_error())+retry(1)+subscribe 655.65 ns 122.41 ns 122.67 ns 1.00

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 975.89 ns 3.90 ns 4.04 ns 0.97
Subscribe empty callbacks to empty observable via pipe operator 976.25 ns 3.90 ns 4.07 ns 0.96

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1932.92 ns 0.23 ns 0.49 ns 0.48
from array of 1 - create + subscribe + current_thread 2475.73 ns 33.02 ns 36.40 ns 0.91
concat_as_source of just(1 immediate) create + subscribe 5455.88 ns 441.32 ns 482.37 ns 0.91
defer from array of 1 - defer + create + subscribe + immediate 1975.69 ns 0.23 ns 0.27 ns 0.87
interval - interval + take(3) + subscribe + immediate 4975.12 ns 114.50 ns 155.22 ns 0.74
interval - interval + take(3) + subscribe + current_thread 6061.97 ns 94.66 ns 97.62 ns 0.97
from array of 1 - create + as_blocking + subscribe + new_thread 85203.62 ns 85796.58 ns 118460.78 ns 0.72
from array of 1000 - create + as_blocking + subscribe + new_thread 92393.91 ns 90175.23 ns 145735.60 ns 0.62
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 8279.77 ns 591.31 ns 752.43 ns 0.79

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 2848.64 ns 0.23 ns 0.23 ns 1.00
immediate_just+filter(true)+subscribe 2525.31 ns 0.23 ns 0.24 ns 0.99
immediate_just(1,2)+skip(1)+subscribe 2771.88 ns 0.24 ns 0.25 ns 0.96
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2110.76 ns 0.47 ns 0.48 ns 0.98
immediate_just(1,2)+first()+subscribe 3215.12 ns 0.27 ns 0.24 ns 1.14
immediate_just(1,2)+last()+subscribe 2380.08 ns 0.27 ns 0.24 ns 1.13
immediate_just+take_last(1)+subscribe 3092.64 ns 0.23 ns 0.25 ns 0.95
immediate_just(1,2,3)+element_at(1)+subscribe 2128.24 ns 0.23 ns 0.24 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 844.15 ns 4.17 ns 4.38 ns 0.95
current_thread scheduler create worker + schedule 1184.36 ns 38.91 ns 39.88 ns 0.98
current_thread scheduler create worker + schedule + recursive schedule 2005.68 ns 204.84 ns 209.11 ns 0.98

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2101.96 ns 4.20 ns 4.42 ns 0.95
immediate_just+scan(10, std::plus)+subscribe 2350.04 ns 0.47 ns 0.49 ns 0.95
immediate_just+flat_map(immediate_just(v*2))+subscribe 5292.17 ns 623.42 ns 645.01 ns 0.97
immediate_just+buffer(2)+subscribe 2485.60 ns 64.27 ns 66.05 ns 0.97
immediate_just+window(2)+subscribe + subscsribe inner 5345.20 ns 2365.04 ns 2408.01 ns 0.98

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2093.10 ns - - 0.00
immediate_just+take_while(true)+subscribe 2101.94 ns 0.23 ns 0.25 ns 0.94

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 4879.49 ns 5.13 ns 5.15 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 7498.34 ns 764.06 ns 805.35 ns 0.95
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 8386.90 ns 623.09 ns 659.02 ns 0.95
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 577.96 ns 608.67 ns 0.95
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 7892.68 ns 1908.12 ns 2011.97 ns 0.95
immediate_just(1) + zip(immediate_just(2)) + subscribe 5171.47 ns 784.01 ns 810.58 ns 0.97

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 76.95 ns 48.93 ns 50.41 ns 0.97
subscribe 100 observers to publish_subject 342174.67 ns 40867.83 ns 54688.52 ns 0.75
100 on_next to 100 observers to publish_subject 50421.26 ns 16812.00 ns 18083.82 ns 0.93

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 2754.34 ns 67.28 ns 70.83 ns 0.95
basic sample with immediate scheduler 2753.88 ns 18.56 ns 19.13 ns 0.97

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2405.73 ns 0.23 ns 0.24 ns 0.99

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 6489.54 ns 4865.25 ns 4045.20 ns 1.20
create(on_error())+retry(1)+subscribe 1802.20 ns 364.58 ns 382.07 ns 0.95

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 273.27 ns 1.56 ns 0.89 ns 1.75
Subscribe empty callbacks to empty observable via pipe operator 268.85 ns 1.55 ns 0.88 ns 1.76

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 561.33 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 811.24 ns 4.35 ns 4.35 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2423.44 ns 187.69 ns 179.42 ns 1.05
defer from array of 1 - defer + create + subscribe + immediate 792.53 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2239.57 ns 58.68 ns 58.66 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3214.92 ns 31.09 ns 31.06 ns 1.00
from array of 1 - create + as_blocking + subscribe + new_thread 31349.76 ns 29127.13 ns 29262.29 ns 1.00
from array of 1000 - create + as_blocking + subscribe + new_thread 41687.71 ns 34895.97 ns 36789.50 ns 0.95
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 3673.45 ns 302.91 ns 305.39 ns 0.99

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1148.18 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 858.73 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1092.16 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 863.24 ns 0.62 ns 0.62 ns 1.00
immediate_just(1,2)+first()+subscribe 1379.07 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 1031.19 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1202.19 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2,3)+element_at(1)+subscribe 861.46 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 282.76 ns 1.55 ns 0.88 ns 1.76
current_thread scheduler create worker + schedule 392.88 ns 4.97 ns 4.97 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 853.53 ns 55.82 ns 55.74 ns 1.00

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 859.27 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 978.45 ns 0.32 ns 0.32 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2230.49 ns 171.80 ns 171.70 ns 1.00
immediate_just+buffer(2)+subscribe 1540.80 ns 14.30 ns 13.98 ns 1.02
immediate_just+window(2)+subscribe + subscsribe inner 2476.21 ns 954.97 ns 934.03 ns 1.02

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 848.25 ns - - 0.00
immediate_just+take_while(true)+subscribe 858.81 ns 0.31 ns 0.31 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 2023.51 ns 0.31 ns 0.31 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 3326.10 ns 203.81 ns 203.15 ns 1.00
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3728.28 ns 160.51 ns 161.03 ns 1.00
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 200.08 ns 200.77 ns 1.00
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6844.06 ns 863.22 ns 856.87 ns 1.01
immediate_just(1) + zip(immediate_just(2)) + subscribe 4289.59 ns 330.70 ns 160.43 ns 2.06

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 54.32 ns 17.97 ns 17.89 ns 1.00
subscribe 100 observers to publish_subject 212452.00 ns 16075.58 ns 16146.15 ns 1.00
100 on_next to 100 observers to publish_subject 37547.59 ns 20547.25 ns 17527.21 ns 1.17

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1301.47 ns 11.80 ns 12.25 ns 0.96
basic sample with immediate scheduler 1366.33 ns 6.22 ns 5.59 ns 1.11

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1004.26 ns 0.31 ns 0.31 ns 1.00

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 2160.93 ns 1039.56 ns 1031.52 ns 1.01
create(on_error())+retry(1)+subscribe 655.25 ns 157.82 ns 157.03 ns 1.01

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 568.63 ns 4.77 ns 4.32 ns 1.10
Subscribe empty callbacks to empty observable via pipe operator 576.32 ns 4.75 ns 4.32 ns 1.10

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1161.31 ns 9.71 ns 9.71 ns 1.00
from array of 1 - create + subscribe + current_thread 1430.90 ns 17.60 ns 17.92 ns 0.98
concat_as_source of just(1 immediate) create + subscribe 3709.74 ns 240.78 ns 241.51 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 1204.57 ns 9.41 ns 9.42 ns 1.00
interval - interval + take(3) + subscribe + immediate 3399.70 ns 143.79 ns 145.35 ns 0.99
interval - interval + take(3) + subscribe + current_thread 3415.68 ns 65.53 ns 66.50 ns 0.99
from array of 1 - create + as_blocking + subscribe + new_thread 118830.00 ns 110690.00 ns 116890.00 ns 0.95
from array of 1000 - create + as_blocking + subscribe + new_thread 126275.00 ns 129800.00 ns 132244.44 ns 0.98
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 5357.71 ns 310.63 ns 330.21 ns 0.94

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1830.78 ns 24.97 ns 25.34 ns 0.99
immediate_just+filter(true)+subscribe 1346.45 ns 24.05 ns 24.35 ns 0.99
immediate_just(1,2)+skip(1)+subscribe 1980.76 ns 23.44 ns 24.06 ns 0.97
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1372.45 ns 26.25 ns 28.99 ns 0.91
immediate_just(1,2)+first()+subscribe 2047.16 ns 23.74 ns 22.83 ns 1.04
immediate_just(1,2)+last()+subscribe 1804.75 ns 24.76 ns 24.07 ns 1.03
immediate_just+take_last(1)+subscribe 2007.48 ns 71.33 ns 72.23 ns 0.99
immediate_just(1,2,3)+element_at(1)+subscribe 1358.10 ns 26.63 ns 27.48 ns 0.97

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 476.62 ns 6.48 ns 6.48 ns 1.00
current_thread scheduler create worker + schedule 677.77 ns 14.04 ns 13.88 ns 1.01
current_thread scheduler create worker + schedule + recursive schedule 1384.98 ns 103.98 ns 104.03 ns 1.00

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1334.03 ns 24.36 ns 24.35 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 1448.43 ns 26.51 ns 26.82 ns 0.99
immediate_just+flat_map(immediate_just(v*2))+subscribe 3466.57 ns 352.61 ns 386.21 ns 0.91
immediate_just+buffer(2)+subscribe 2646.75 ns 69.40 ns 97.61 ns 0.71
immediate_just+window(2)+subscribe + subscsribe inner 4007.72 ns 1295.41 ns 1297.94 ns 1.00

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1638.71 ns 23.12 ns 23.14 ns 1.00
immediate_just+take_while(true)+subscribe 1335.71 ns 24.05 ns 24.35 ns 0.99

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 3527.38 ns 11.11 ns 11.10 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5126.42 ns 415.19 ns 423.52 ns 0.98
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 5425.94 ns 331.85 ns 326.89 ns 1.02
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 300.59 ns 300.45 ns 1.00
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 5235.62 ns 948.55 ns 934.23 ns 1.02
immediate_just(1) + zip(immediate_just(2)) + subscribe 3555.06 ns 555.71 ns 551.36 ns 1.01

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 36.62 ns 19.44 ns 19.54 ns 0.99
subscribe 100 observers to publish_subject 264225.00 ns 27216.67 ns 27573.81 ns 0.99
100 on_next to 100 observers to publish_subject 48752.38 ns 32567.74 ns 33118.75 ns 0.98

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1902.64 ns 101.63 ns 101.72 ns 1.00
basic sample with immediate scheduler 1917.70 ns 72.16 ns 74.60 ns 0.97

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1488.67 ns 24.66 ns 24.97 ns 0.99

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 2189.50 ns 259.88 ns 254.03 ns 1.02
create(on_error())+retry(1)+subscribe 1198.54 ns 190.62 ns 195.71 ns 0.97

@AlexInLog AlexInLog merged commit 5347400 into v2 Sep 30, 2024
@AlexInLog AlexInLog deleted the fix_threads branch September 30, 2024 20:09
@coderabbitai coderabbitai Bot mentioned this pull request Sep 30, 2024
This was referenced Nov 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant